package com.tea.controller;

import com.tea.Model.DeliveryCompany;
import com.tea.Model.vo.DeliveryCompanyVO;
import com.tea.service.DeliveryCompanyService;
import com.tea.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 运力公司管理
 */
@RestController
@RequestMapping("/delivery")
@Slf4j
public class DeliveryCompanyController {

    @Resource
    private DeliveryCompanyService deliveryCompanyService;

    /**
     * 手动同步微信运力公司列表到数据库
     * 该接口用于手动调用，从微信获取运力公司列表并存储到数据库
     */
    @PostMapping("/sync")
    public Result<String> syncDeliveryCompanies() {
        try {
            Result<?> result = deliveryCompanyService.syncDeliveryCompanies();
            if (result.isSuccess()) {
                return Result.success("运力公司列表同步成功：" + result.getMessage());
            } else {
                return Result.error("同步失败：" + result.getMessage());
            }
        } catch (Exception e) {
            log.error("同步运力公司列表失败", e);
            return Result.error("同步失败：" + e.getMessage());
        }
    }

    /**
     * 获取所有启用的运力公司列表
     */
    @GetMapping("/list")
    public Result<List<DeliveryCompanyVO>> getEnabledDeliveryCompanies() {
        List<DeliveryCompanyVO> companies = deliveryCompanyService.getEnabledDeliveryCompanies();
        return Result.success(companies);
    }

    /**
     * 获取所有运力公司列表（包括禁用的）
     */
    @GetMapping("/all")
    public Result<List<DeliveryCompanyVO>> getAllDeliveryCompanies() {
        List<DeliveryCompanyVO> companies = deliveryCompanyService.getAllDeliveryCompanies();
        return Result.success(companies);
    }

    /**
     * 启用/禁用运力公司
     * @param id 运力公司ID
     * @param status 状态：1-启用，0-禁用
     */
    @PostMapping("/status")
    public Result<String> updateDeliveryCompanyStatus(@RequestParam Long id, @RequestParam Integer status) {
        try {
            deliveryCompanyService.updateStatus(id, status);
            String statusText = status == 1 ? "启用" : "禁用";
            return Result.success("运力公司" + statusText + "成功");
        } catch (Exception e) {
            log.error("更新运力公司状态失败", e);
            return Result.error("操作失败：" + e.getMessage());
        }
    }

    /**
     * 根据运力公司名称获取编码
     * @param deliveryName 运力公司名称
     */
    @GetMapping("/code")
    public Result<String> getDeliveryCodeByName(@RequestParam String deliveryName) {
        String code = deliveryCompanyService.getDeliveryIdByName(deliveryName);
        if (code != null) {
            return Result.success(code);
        } else {
            return Result.error("未找到对应的运力公司编码");
        }
    }
}